﻿using System;

namespace SWGeneracionE
{

    public class Constantes
    {
        //Generales
        public const int MAYORIA_EDAD = 18;
        public const decimal TASA_APROX = 7.5M;
        public const string FORMATO_FECHA = "dd-MM-yyyy";
        public const string FORMATO_FECHA_ARCHIVO = "ddMMyyyy";
        public const string SPECIFIER_N = "0.00";
        public const string SIMBOLO_LOC = "GTQ";
        public const string SIMBOLO_USD = "USD";

        //Respuestas
        public const string RESPUESTA_POSITIVA = "SI";
        public const string RESPUESTA_NEGATIVA = "NO";

        //Sexo
        public const string SEXO_FEMENINO = "F";
        public const string SEXO_MASCULINO = "M";

        //Estado Civil
        public const short ESTADOCIVIL_SOLTERO = 1;
        public const string STR_ESTADOCIVIL_SOLTERO = "Soltero";
        public const short ESTADOCIVIL_CASADO = 2;
        public const string STR_ESTADOCIVIL_CASADO = "Casado";

        //Tipo de Transporte
        public const byte TIPOTRANSPORTE_BUS = 1;
        public const string STR_TIPOTRANSPORTE_BUS = "Bus";
        public const byte TIPOTRANSPORTE_AUTO = 2;
        public const string STR_TIPOTRANSPORTE_AUTO = "Vehículo";

        //Estados de pago
        public const int ESTADOPAGO_INGRESADO = 1;
        public const string STR_ESTADOPAGO_INGRESADO = "Ingresado";
        public const int ESTADOPAGO_AUTORIZADO = 2;
        public const string STR_ESTADOPAGO_AUTORIZADO = "Autorizado";
        public const int ESTADOPAGO_RECHAZADO = 3;
        public const string STR_ESTADOPAGO_RECHAZADO = "Rechazado";
        public const int ESTADOPAGO_TRANSFERIDO = 4;
        public const string STR_ESTADOPAGO_TRANSFERIDO = "Transferido";

        //Estados de recaudación
        public const int ESTADORECAUDACION_INGRESADO = 1;
        public const string STR_ESTADORECAUDACION_INGRESADO = "Ingresado";
        public const int ESTADORECAUDACION_TRANSFERIDO = 2;
        public const string STR_ESTADORECAUDACION_TRANSFERIDO = "Transferido";

        //Estados de bus
        public const int ESTADOBUS_ABIERTO = 1;
        public const string STR_ESTADOBUS_ABIERTO = "Abierto";
        public const int ESTADOBUS_CERRADO = 2;
        public const string STR_ESTADOBUS_CERRADO = "Cerrado";

        //Estados de movimiento
        public const int ESTADOMOVIMIENTO_INGRESADO = 1;
        public const string STR_ESTADOMOVIMIENTO_INGRESADO = "Ingresado";
        public const int ESTADOMOVIMIENTO_AUTORIZADO = 2;
        public const string STR_ESTADOMOVIMIENTO_AUTORIZADO = "Autorizado";
        public const int ESTADOMOVIMIENTO_RECHAZADO = 3;
        public const string STR_ESTADOMOVIMIENTO_RECHAZADO = "Rechazado";

        //Estados de participante
        public const int ESTADOPARTICIPANTE_INGRESADO = 1;
        public const string STR_ESTADOPARTICIPANTE_INGRESADO = "Ingresado";
        public const int ESTADOPARTICIPANTE_INSCRITO = 2;
        public const string STR_ESTADOPARTICIPANTE_INSCRITO = "Inscrito";
        public const int ESTADOPARTICIPANTE_CANCELADO = 3;
        public const string STR_ESTADOPARTICIPANTE_CANCELADO = "Cancelado";

        //Motivos de depósito
        public const int MOTIVODEPOSITO_BUS = 1;
        public const string STR_MOTIVODEPOSITO_BUS = "Bus";
        public const int MOTIVODEPOSITO_EVENTO = 2;
        public const string STR_MOTIVODEPOSITO_EVENTO = "Evento";
        public const int MOTIVODEPOSITO_RECAUDACION = 3;
        public const string STR_MOTIVODEPOSITO_RECAUDACION = "Recaudación";

        //Tipos de pago
        public const int TIPOPAGO_TRANSFERENCIAINTERNA = 1;
        public const string STR_TIPOPAGO_TRANSFERENCIAINTERNA = "Transferencia Interna";
        public const int TIPOPAGO_TRANSFERENCIARECAUDACION = 2;
        public const string STR_TIPOPAGO_TRANSFERENCIARECAUDACION = "Transferencia Recaudación";
        public const int TIPOPAGO_PAGOHOTEL = 3;
        public const string STR_TIPOPAGO_PAGOHOTEL = "Pago en Hotel";
        public const int TIPOPAGO_TRANSFERENCIABANCARIA = 4;
        public const string STR_TIPOPAGO_TRANSFERENCIABANCARIA = "Transferencia Bancaria";
        public const int TIPOPAGO_DEPOSITOBANCARIO = 5;
        public const string STR_TIPOPAGO_DEPOSITOBANCARIO = "Depósito Bancario";
        public const int TIPOPAGO_CHEQUE = 6;
        public const string STR_TIPOPAGO_CHEQUE = "Cheque";
        public const int TIPOPAGO_EFECTIVO = 7;
        public const string STR_TIPOPAGO_EFECTIVO = "Efectivo";

        //Tipos de movimiento
        public const int TIPOMOVIMIENTO_PAGOHOTEL = 1;
        public const string STR_TIPOMOVIMIENTO_PAGOHOTEL = "Pago en Hotel";
        public const int TIPOMOVIMIENTO_TRANSFERENCIABANCARIA = 2;
        public const string STR_TIPOMOVIMIENTO_TRANSFERENCIABANCARIA = "Transferencia Bancaria";
        public const int TIPOMOVIMIENTO_DEPOSITOBANCARIO = 3;
        public const string STR_TIPOMOVIMIENTO_DEPOSITOBANCARIO = "Depósito";

        //Ruta de bus
        public const int RUTABUS_IDA = 1;
        public const string STR_RUTABUS_IDA = "Ida";
        public const int RUTABUS_VUELTA = 2;
        public const string STR_RUTABUS_VUELTA = "Vuelta";

        public static string EstadoPago(int estado)
        {
            switch (estado)
            {
                case Constantes.ESTADOPAGO_INGRESADO:
                    return Constantes.STR_ESTADOPAGO_INGRESADO;
                case Constantes.ESTADOPAGO_RECHAZADO:
                    return Constantes.STR_ESTADOPAGO_RECHAZADO;
                case Constantes.ESTADOPAGO_AUTORIZADO:
                    return Constantes.STR_ESTADOPAGO_AUTORIZADO;
                case Constantes.ESTADOPAGO_TRANSFERIDO:
                    return Constantes.STR_ESTADOPAGO_TRANSFERIDO;
                default:
                    return string.Empty;
            }
        }

        public static string TipoPago(int tipo)
        {
            switch (tipo)
            {
                case Constantes.TIPOPAGO_CHEQUE:
                    return Constantes.STR_TIPOPAGO_CHEQUE;
                case Constantes.TIPOPAGO_DEPOSITOBANCARIO:
                    return Constantes.STR_TIPOPAGO_DEPOSITOBANCARIO;
                case Constantes.TIPOPAGO_EFECTIVO:
                    return Constantes.STR_TIPOPAGO_EFECTIVO;
                case Constantes.TIPOPAGO_PAGOHOTEL:
                    return Constantes.STR_TIPOPAGO_PAGOHOTEL;
                case Constantes.TIPOPAGO_TRANSFERENCIABANCARIA:
                    return Constantes.STR_TIPOPAGO_TRANSFERENCIABANCARIA;
                case Constantes.TIPOPAGO_TRANSFERENCIAINTERNA:
                    return Constantes.STR_TIPOPAGO_TRANSFERENCIAINTERNA;
                case Constantes.TIPOPAGO_TRANSFERENCIARECAUDACION:
                    return Constantes.STR_TIPOPAGO_TRANSFERENCIARECAUDACION;
                default:
                    return string.Empty;
            }
        }

        public static string EstadoMovimiento(int estado)
        {
            switch (estado)
            {
                case Constantes.ESTADOMOVIMIENTO_INGRESADO:
                    return Constantes.STR_ESTADOMOVIMIENTO_INGRESADO;
                case Constantes.ESTADOMOVIMIENTO_AUTORIZADO:
                    return Constantes.STR_ESTADOMOVIMIENTO_AUTORIZADO;
                case Constantes.ESTADOMOVIMIENTO_RECHAZADO:
                    return Constantes.STR_ESTADOMOVIMIENTO_RECHAZADO;
                default:
                    return string.Empty;
            }
        }

        public static string TipoMovimiento(int tipo)
        {
            switch (tipo)
            {
                case Constantes.TIPOMOVIMIENTO_DEPOSITOBANCARIO:
                    return Constantes.STR_TIPOMOVIMIENTO_DEPOSITOBANCARIO;
                case Constantes.TIPOMOVIMIENTO_PAGOHOTEL:
                    return Constantes.STR_TIPOMOVIMIENTO_PAGOHOTEL;
                case Constantes.TIPOMOVIMIENTO_TRANSFERENCIABANCARIA:
                    return Constantes.STR_TIPOMOVIMIENTO_TRANSFERENCIABANCARIA;
                default:
                    return string.Empty;
            }
        }
                
        public static string EstadoParticipante(int estado)
        {
            switch (estado)
            {
                case Constantes.ESTADOPARTICIPANTE_CANCELADO:
                    return Constantes.STR_ESTADOPARTICIPANTE_CANCELADO;
                case Constantes.ESTADOPARTICIPANTE_INGRESADO:
                    return Constantes.STR_ESTADOPARTICIPANTE_INGRESADO;
                case Constantes.ESTADOPARTICIPANTE_INSCRITO:
                    return Constantes.STR_ESTADOPARTICIPANTE_INSCRITO;
                default:
                    return string.Empty;
            }
        }

        public static string TipoTransporte(short tipoTransporte)
        {
            switch (tipoTransporte)
            {
                case Constantes.TIPOTRANSPORTE_BUS:
                    return Constantes.STR_TIPOTRANSPORTE_BUS;
                case Constantes.TIPOTRANSPORTE_AUTO:
                    return Constantes.STR_TIPOTRANSPORTE_AUTO;
                default:
                    return string.Empty;
            }
        }

        public static int EdadParticipante(DateTime fechaNacimiento)
        {
            int edad = DateTime.Now.Year - fechaNacimiento.Year;
            DateTime nacimientoAhora = fechaNacimiento.AddYears(edad);
            if (DateTime.Now.CompareTo(nacimientoAhora) < 0) edad--;
            return edad;
        }

        public static string EstadoCivil(short estadoCivil)
        {
            switch (estadoCivil)
            {
                case Constantes.ESTADOCIVIL_CASADO:
                    return Constantes.STR_ESTADOCIVIL_CASADO;
                case Constantes.ESTADOCIVIL_SOLTERO:
                    return Constantes.STR_ESTADOCIVIL_SOLTERO;
                default:
                    return string.Empty;
            }
        }
    }

}